如何设计简易的抗弱碰撞哈希函数 |
您所在的位置:网站首页 › ctf 逆向 › 如何设计简易的抗弱碰撞哈希函数 |
这里介绍法 公式思路如下 this_hash=( (R*last_hash).operateX( f(Magic_Num, this_block) ) ) % M 看似有点复杂,我们一步步讲,保证0基础看懂 operateX指的是某种运算,可以是加减乘除四则运算,也可以是位运算,也可以是更复杂的运算组合 这个运算的左操作数为R*last_hash,右操作数为函数f()的返回值 函数f的参数: Magic_Num不多说,随意定的一个值就行 this_block是本轮hash加密的加密块的内容 M是hash表的表长 这里分为三个理解阶段,在数学上并不严谨,但对我们的理解非常有帮助 首先我们规定,待处理的原数据是长度和内容随机的字符串 字符范围为大小写字母和十个阿拉伯数字,以ASCII表示 接下来我们举一个用上面公式衍生出来的例子 //main.cpp int hash = 0; //这里我们应当将hash变量理解为计数器 //这里的计数器指的是计算从自然数N累加到自然数M这一操作所需的那个中间变量;而非计数器这一数据结构 for(int i = 0; i |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |